package cn.wl.pchart.service;

import cn.wl.pchart.entity.Dynamic;
import cn.wl.pchart.entity.Dynamics;
import org.apache.ibatis.annotations.Param;

import java.math.BigInteger;
import java.util.List;

// 动态服务
public interface DynamicService {
    /**
     * 获取一个完整的动态-用户关注列表中的，time之前的动态
     * @param id 请求动态的用户id
     * @param time 请求的上一个时间
     * @return
     */
    public Dynamics getDynamics(String id, String time);

    // 随机获取一条动态
    public Dynamics getDynamics();

    /**
     * 查询id的全部动态did
     * @param id 请求动态的用户id
     * @return
     */
    public List<Dynamics> getDynamicsById(String id);

    /**
     * 通过did获取一个完整的动态
     * @param did
     * @return
     */
    public Dynamics getDynamics(BigInteger did);

    /**
     * 通过标签随机取出一条动态
     * @param label
     * @return
     */
    public Dynamics getDynamics(String label);

    /**
     * 发送一条动态
     * @param dynamic
     */
    public void sendDynamic(Dynamic dynamic);

    /**
     * 根据did删除用户的动态
     * @param did
     */
    public void deleteDynamic(BigInteger did);

    /**
     * 点赞
     * @param did 动态id
     * @param id 用户id
     */
    public void doLike(BigInteger did, String id);

    /**
     * 取消点赞
     * @param did
     * @param id
     */
    public void cancelLike(BigInteger did, String id);

    /**
     * 评论
     * @param did
     * @param id
     * @param data 评论内容
     */
    public void doComment(BigInteger did, String id, String data);

    /**
     * 删除评论
     * @param did
     * @param id
     * @param data
     */
    public void deleteComment(BigInteger did, String id, String data);

    /**
     * 转发
     * @param did
     * @param id
     */
    public void doForward(BigInteger did, String id);

    // 模糊查询动态
    public List<BigInteger> searchDynamic(String keyword);
}
